home *** CD-ROM | disk | FTP | other *** search
- /*
- **
- ** Include file for the Warp3D API
- ** $VER: Warp3D.h 1.0 (20.05.98)
- **
- **
- ** This file is part of the Warp3D Project.
- ** Warp3D is copyrighted
- ** (C) 1998 Sam Jordan, Hans-Jörg Frieden, Thomas Frieden
- ** All rights reserved
- **
- ** See the documentation for conditions.
- **
- */
- #ifndef _WARP3D_WARP3D_H
- #define _WARP3D_WARP3D_H
-
- #include <exec/types.h>
- #include <exec/lists.h>
- #include <exec/nodes.h>
- #include <exec/libraries.h>
- #include <utility/tagitem.h>
- #include <graphics/gfx.h>
- #include <graphics/displayinfo.h>
-
- typedef short W3D_Bool;
- typedef float W3D_Float;
- typedef double W3D_Double;
-
- #ifndef W3D_TRUE
- #define W3D_TRUE 1
- #endif
- #ifndef W3D_FALSE
- #define W3D_FALSE 0
- #endif
-
- #if defined(__GNUC__)
- #define PACKED __attribute__ ((packed))
- #else
- #define PACKED
- #endif
-
-
- typedef struct
- {
- W3D_Float r, g, b, a; /* RGBA values in range [0..1] */
- }
- W3D_Color;
-
- typedef struct
- {
- W3D_Float r, g, b; /* RGB values in range [0..1] */
- }
- W3D_ColorRGB;
-
- typedef struct
- {
- W3D_Float x, y; /* window coordinates */
- W3D_Double z; /* z koordinate. Double precision for 32bit
- zbuffers */
- W3D_Float w; /* w koordinate. */
- W3D_Float u, v, tex3d; /* u/v koordinates, and an additional for 3d
- textures */
- W3D_Color color; /* vertex color */
- W3D_ColorRGB spec; /* specular lighting color */
- W3D_Float l; /* Lambda value for Mipmapping. Private right
- now */
- }
- W3D_Vertex;
-
- typedef struct
- {
- struct Node link; /* linkage, used by Warp3D itself */
- W3D_Bool resident; /* TRUE, if texture is on card */
- W3D_Bool mipmap; /* TRUE, if mipmaps are supported */
- W3D_Bool dirty; /* TRUE, if texture image was changed */
- W3D_Bool matchfmt; /* TRUE, if srcfmt = destfmt */
- W3D_Bool reserved1;
- W3D_Bool reserved2;
- ULONG mipmapmask PACKED; /* which mipmaps have to be generated */
- void *texsource PACKED; /* texture source image */
- void *mipmaps[16] PACKED; /* mipmap images */
- int texfmtsrc PACKED; /* texture format (from W3D_ATO_FORMAT) */
- ULONG *palette PACKED; /* texture palette for chunky textures */
- void *texdata PACKED; /* texture data converted */
- void *texdest PACKED; /* texture location on card */
- int texdestsize PACKED; /* size of VRAM allocation */
- int texwidth PACKED; /* texture width in pixels */
- int texwidthexp PACKED; /* texture width exponent */
- int texheight PACKED; /* texture width in pixels */
- int texheightexp PACKED; /* texture width exponent */
- int bytesperpix PACKED; /* bytes per pixel */
- int bytesperrow PACKED; /* bytes per row */
- void *driver PACKED; /* insert driver specific data here */
- }
- W3D_Texture;
-
- typedef struct
- {
- W3D_Vertex v1; /* vertex */
- W3D_Texture *tex; /* texture */
- W3D_Float pointsize; /* point diameter */
- }
- W3D_Point;
-
- typedef struct
- {
- W3D_Vertex v1, v2; /* vertices for line drawing */
- W3D_Texture *tex; /* texture */
- W3D_Float linewidth; /* line width */
- W3D_Bool st_enable; /* stippling enable */
- unsigned short st_pattern; /* stippling pattern */
- int st_factor; /* stippling factor */
- }
- W3D_Line;
-
-
- typedef struct
- { /* V2 only */
- int vertexcount; /* Number of vertices */
- W3D_Vertex *v; /* An array of at least two vertices */
- W3D_Texture *tex; /* texture */
- W3D_Float linewidth; /* line width */
- W3D_Bool st_enable; /* stippling enable */
- unsigned short st_pattern; /* stippling pattern */
- int st_factor; /* stippling factor */
- }
- W3D_Lines;
-
- typedef struct
- {
- W3D_Vertex v1, v2, v3; /* three vertices for triangle drawing */
- W3D_Texture *tex; /* texture */
- unsigned char *st_pattern; /* stippling pattern */
- }
- W3D_Triangle;
-
- typedef struct
- {
- W3D_Vertex *v1, *v2, *v3; /* Three vertex POINTERS */
- W3D_Texture *tex; /* see above */
- unsigned char *st_pattern; /* See above */
- }
- W3D_TriangleV;
-
- typedef struct
- {
- int vertexcount; /* number of vertices */
- W3D_Vertex *v; /* an array of at least 3 vertices */
- W3D_Texture *tex; /* texture */
- unsigned char *st_pattern; /* stippling pattern */
- }
- W3D_Triangles;
-
- typedef struct
- {
- int vertexcount; /* number of vertices */
- W3D_Vertex **v; /* Pointer to an array of pointers ! */
- W3D_Texture *tex; /* Texture */
- unsigned char *st_pattern; /* Stippling pattern */
- }
- W3D_TrianglesV;
-
- typedef struct
- {
- W3D_Float fog_start; /* start of fogging zone */
- W3D_Float fog_end; /* end of fogging area */
- W3D_Float fog_density; /* fog density for exp. fogging */
- W3D_ColorRGB fog_color; /* fog color */
- }
- W3D_Fog;
-
- typedef struct
- {
- int left; /* left offset of clipping area */
- int top; /* top offset of clipping area */
- int width; /* width of clipping area */
- int height; /* height of clipping area */
- }
- W3D_Scissor;
-
- typedef struct
- {
- short type; /* Type of this entry */
- short length; /* Length of the entry, including this struct
- */
- ULONG state; /* State longword */
- }
- W3D_QHead;
-
- typedef struct
- {
- UBYTE *data; /* Pointer to data area */
- ULONG size; /* Size of the data block */
- UBYTE *current; /* Current insertion position */
- }
- W3D_Queue;
-
- #define QEMPTY(x) ( (x)->data == (x)->current )
-
- /* The maximum number of texture mapping units (TMU) supported by Warp3D right now */
- #define W3D_MAX_TMU 16L /* be prepared that this might grow */
-
- /* The context structure is private, and should not be accessed in any
- way by Warp3D applications, with the following exceptions:
-
- The following fields are READ-ONLY:
- format, bprow, width, height, depth, drawmem
-
- */
- typedef struct
- {
- void *driver; /* insert driver specific data here */
- void *gfxdriver; /* usable by the GFXdriver */
- int drivertype; /* driver type (3DHW / CPU) */
- void *regbase; /* register base */
- void *vmembase; /* video memory base */
- void *zbuffer; /* Pointer to the Z buffer */
- void *stencilbuffer; /* Pointer to the stencil buffer */
- ULONG state; /* hardware state (see below) */
- struct BitMap *drawregion; /* destination bitmap */
- ULONG supportedfmt; /* bitmask with all supported dest fmt */
- ULONG format; /* bitmap format (see below) */
- int yoffset; /* Y-Offset (for ScrollVPort-Multibuf.) */
- int bprow; /* bytes per row */
- int width; /* bitmap width */
- int height; /* bitmap height */
- int depth; /* bitmap depth */
- W3D_Bool chunky; /* TRUE, if palettized screen mode */
- W3D_Bool destalpha; /* TRUE, if dest alpha channel available */
- W3D_Bool zbufferalloc; /* TRUE, is Z buffer is allocated */
- W3D_Bool stbufferalloc; /* TRUE, is stencil buffer is allocated */
- W3D_Bool HWlocked; /* TRUE, if 3D HW was locked */
- W3D_Bool w3dbitmap; /* TRUE, if drawregion points to a W3D_Bitmap
- */
- W3D_Bool zbufferlost; /* TRUE, if zbuffer not reallocatable */
- W3D_Bool reserved3;
- struct MinList restex; /* A list of all resident textures, used for
- LRU implementation */
- struct MinList tex; /* A list of all textures which are not on
- card */
- int maxtexwidth; /* -HJF- replaced these for possible */
- int maxtexheight; /* support of non-square textures */
- int maxtexwidthp; /* -HJF- For hardware that has different */
- int maxtexheightp; /* constaints in perspective mode */
- W3D_Scissor scissor; /* scissor region */
- W3D_Fog fog; /* fogging parameters */
- ULONG envsupmask; /* Mask of supported envmodes */
- W3D_Queue *queue; /* queue to buffer drawings */
- void *drawmem; /* base address for drawing operations */
- ULONG globaltexenvmode; /* Global texture environment mode */
- W3D_Float globaltexenvcolor[4]; /* global texture env color */
- struct Library *DriverBase; /* Library base of the active driver */
- ULONG EnableMask; /* Mask for enable-able states */
- ULONG DisableMask; /* Mask for disable-able states */
- ULONG CurrentChip; /* Chip constant */
- ULONG DriverVersion; /* Internal driver version */
- /* --- NEW for V4 ------------------------------------------------------------*/
- /* Vertex pointer */
- void *VertexPointer; /* Pointer to the vertex buffer array */
- int VPStride; /* Stride of vertex array */
- ULONG VPMode; /* Vertex buffer format */
- ULONG VPFlags; /* not yet used */
- /* TexCoord pointer */
- void *TexCoordPointer[W3D_MAX_TMU];
- /* Pointer to each TMU's texture coordinate array */
- int TPStride[W3D_MAX_TMU]; /* Stride of TexCoordPointers */
- W3D_Texture *CurrentTex[W3D_MAX_TMU];
- /* Pointer to each TMU's texture object */
- int TPVOffs[W3D_MAX_TMU]; /* Offset to V coordinate */
- int TPWOffs[W3D_MAX_TMU]; /* Offset to W coordinate */
- int TPFlags[W3D_MAX_TMU]; /* Flags */
- /* Color Pointer */
- void *ColorPointer; /* Pointer to the color array */
- int CPStride; /* Color pointer stride */
- ULONG CPMode; /* Mode and color format */
- ULONG CPFlags; /* not yet used */
- ULONG FrontFaceOrder; /* Winding order of front facing triangles */
- }
- W3D_Context;
-
-
- typedef struct
- {
- int bprow; /* Bytes per row */
- int width; /* Width */
- int height; /* Height */
- ULONG format; /* Destination color format */
- void *dest; /* Pointer to destination */
- }
- W3D_Bitmap;
-
- typedef struct
- { /* V2 only */
- ULONG ChipID; /* One of W3D_CHIP_??? below */
- ULONG formats; /* Bitmask of supported formats */
- char *name; /* Name of the chip/driver */
- W3D_Bool swdriver; /* W3D_TRUE -> CPU-Driver */
- }
- W3D_Driver;
-
- /* W3D_ScreenMode structure */
- typedef struct
- {
- ULONG ModeID; /* ModeID for OpenScreen */
- ULONG Width, Height; /* Width and Height for visible screen */
- ULONG Depth; /* Pixel Depth */
- char DisplayName[DISPLAYNAMELEN]; /* readable name of this display mode
- */
- W3D_Driver *Driver PACKED; /* Matching driver for this mode */
- void *Next PACKED; /* Next W3D_ScreenMode in list */
- }
- W3D_ScreenMode;
-
-
- /* Tags for W3D_CreateContext */
-
- #define W3D_CC_TAGS (TAG_USER+0x200000)
- #define W3D_CC_BITMAP (W3D_CC_TAGS+0) /* destination bitmap
- */
- #define W3D_CC_YOFFSET (W3D_CC_TAGS+1) /* y-Offset */
- #define W3D_CC_DRIVERTYPE (W3D_CC_TAGS+2) /* see below */
- #define W3D_CC_W3DBM (W3D_CC_TAGS+3) /* Use W3D_Bitmap
- instead of struct
- BitMap */
- #define W3D_CC_INDIRECT (W3D_CC_TAGS+4) /* Indirect drawing */
- #define W3D_CC_GLOBALTEXENV (W3D_CC_TAGS+5) /* SetTexEnv is
- global */
- #define W3D_CC_DOUBLEHEIGHT (W3D_CC_TAGS+6) /* Drawing area has
- double height */
- #define W3D_CC_FAST (W3D_CC_TAGS+7) /* Allow Warp3D to
- modify passed
- Triangle/Lines/Points
- */
- #define W3D_CC_MODEID (W3D_CC_TAGS+8) /* Specify modeID to
- use */
-
- /* driver types. These are used as flags for W3D_CreateContext and as bitmask
- for W3D_CheckDriver. It is also used by W3DHW_GetDriverInfo and in the
- element 'drivertype' in the context structure */
-
- #define W3D_DRIVER_UNAVAILABLE (1<<0) /* driver unavailable */
- #define W3D_DRIVER_BEST (1<<1) /* use best mode */
- #define W3D_DRIVER_3DHW (1<<2) /* use 3D-HW */
- #define W3D_DRIVER_CPU (1<<3) /* use CPU */
-
- /* Chip constants returned e.g. by W3D_GetDrivers. These can be
- used to identify the chip that is active/available.
- You may not, however, make any assumtions about the capabilities
- of the driver based on this constant, since some features might be
- emulated.
- Strictly for informational/internal uses.
- */
-
- #define W3D_CHIP_UNKNOWN 1
- #define W3D_CHIP_VIRGE 2
- #define W3D_CHIP_PERMEDIA2 3
- #define W3D_CHIP_VOODOO1 4
- #define W3D_CHIP_AVENGER 5 /* a.k.a. The Voodoo 3 */
-
- /* Tags for W3D_AllocTexObj */
-
- #define W3D_ATO_TAGS (TAG_USER+0x201000)
- #define W3D_ATO_IMAGE (W3D_ATO_TAGS+0) /* texture image */
- #define W3D_ATO_FORMAT (W3D_ATO_TAGS+1) /* source format */
- #define W3D_ATO_WIDTH (W3D_ATO_TAGS+2) /* border width */
- #define W3D_ATO_HEIGHT (W3D_ATO_TAGS+3) /* border height */
- #define W3D_ATO_MIPMAP (W3D_ATO_TAGS+4) /* mipmap mask */
- #define W3D_ATO_PALETTE (W3D_ATO_TAGS+5) /* texture palette */
- #define W3D_ATO_MIPMAPPTRS (W3D_ATO_TAGS+6) /* array of
- user-supplied
- mipmaps */
-
- /* Possible modes for SetFrontFace */
- #define W3D_CW 0 /* Front face is clockwise */
- #define W3D_CCW 1 /* Front face is counter clockwise */
-
- /* possible values for W3D_ATO_FORMAT and W3D_GetTexFmtInfo */
- /* a = alpha, r = red, g = green, b = blue, l = luminance, i = intensity */
-
- #define W3D_CHUNKY 1 /* palettized */
- #define W3D_A1R5G5B5 2 /* a rrrrr ggggg bbbbb */
- #define W3D_R5G6B5 3 /* rrrrr gggggg bbbbb */
- #define W3D_R8G8B8 4 /* rrrrrrrr gggggggg bbbbbbbb */
- #define W3D_A4R4G4B4 5 /* aaaa rrrr gggg bbbb */
- #define W3D_A8R8G8B8 6 /* aaaaaaaa rrrrrrrr gggggggg
- bbbbbbbb */
- #define W3D_A8 7 /* aaaaaaaa */
- #define W3D_L8 8 /* llllllll */
- #define W3D_L8A8 9 /* llllllll aaaaaaaa */
- #define W3D_I8 10 /* iiiiiiii */
- #define W3D_R8G8B8A8 11 /* rrrrrrrr gggggggg bbbbbbbb
- aaaaaaaa */
-
- /* return values of W3D_GetTexFmtInfo (bitmask) */
-
- #define W3D_TEXFMT_SUPPORTED (1<<0) /* format is supported, although it
- may be converted */
- #define W3D_TEXFMT_FAST (1<<16) /* format directly supported
- by 3D HW */
- #define W3D_TEXFMT_CLUTFAST (1<<17) /* format is directly
- supported on LUT8 screens */
- #define W3D_TEXFMT_ARGBFAST (1<<18) /* format is directly
- supported on 16/24 bit
- screens */
- #define W3D_TEXFMT_UNSUPPORTED (1<<1) /* this format is unsupported, and
- can't be simulated */
-
- /* bitmap format flags used by CPU drivers */
-
- #define W3D_FMT_CLUT (1<<0) /* chunky */
- #define W3D_FMT_R5G5B5 (1<<1) /* 0 rrrrr ggggg bbbbb */
- #define W3D_FMT_B5G5R5 (1<<2) /* 0 bbbbb ggggg rrrrr */
- #define W3D_FMT_R5G5B5PC (1<<3) /* ggg bbbbb 0 rrrrr gg */
- #define W3D_FMT_B5G5R5PC (1<<4) /* ggg rrrrr 0 bbbbb gg */
- #define W3D_FMT_R5G6B5 (1<<5) /* rrrrr gggggg bbbbb */
- #define W3D_FMT_B5G6R5 (1<<6) /* bbbbb gggggg rrrrr */
- #define W3D_FMT_R5G6B5PC (1<<7) /* ggg bbbbb rrrrr ggg */
- #define W3D_FMT_B5G6R5PC (1<<8) /* ggg rrrrr bbbbb ggg */
- #define W3D_FMT_R8G8B8 (1<<9) /* rrrrrrrr gggggggg bbbbbbbb */
- #define W3D_FMT_B8G8R8 (1<<10) /* bbbbbbbb gggggggg rrrrrrrr
- */
- #define W3D_FMT_A8R8G8B8 (1<<11) /* aaaaaaaa rrrrrrrr gggggggg
- bbbbbbbb */
- #define W3D_FMT_A8B8G8R8 (1<<12) /* aaaaaaaa bbbbbbbb gggggggg
- rrrrrrrr */
- #define W3D_FMT_R8G8B8A8 (1<<13) /* rrrrrrrr gggggggg bbbbbbbb
- aaaaaaaa */
- #define W3D_FMT_B8G8R8A8 (1<<14) /* bbbbbbbb gggggggg rrrrrrrr
- aaaaaaaa */
-
- /* possible mode values for W3D_SetState/W3D_GetState and for 'state' in the
- context structure */
-
- #define W3D_AUTOTEXMANAGEMENT (1<<1) /* automatic texture management */
- #define W3D_SYNCHRON (1<<2) /* wait, until HW is idle */
- #define W3D_INDIRECT (1<<3) /* drawing is queued until flushed */
- #define W3D_GLOBALTEXENV (1<<4) /* SetTexEnv is global */
- #define W3D_DOUBLEHEIGHT (1<<5) /* Drawing area is double height */
- #define W3D_FAST (1<<6) /* Allow Warp3D to modify passed
- Triangles/Points/Lines */
- #define W3D_AUTOCLIP (1<<7) /* clip to screen region */
-
- #define W3D_TEXMAPPING (1<<8) /* texmapping state */
- #define W3D_PERSPECTIVE (1<<9) /* perspective correction state */
- #define W3D_GOURAUD (1<<10) /* gouraud/flat shading */
- #define W3D_ZBUFFER (1<<11) /* Z-Buffer state */
- #define W3D_ZBUFFERUPDATE (1<<12) /* Z-Buffer update state */
- #define W3D_BLENDING (1<<13) /* Alpha blending state */
- #define W3D_FOGGING (1<<14) /* Fogging state */
- #define W3D_ANTI_POINT (1<<15) /* Point antialiasing state */
- #define W3D_ANTI_LINE (1<<16) /* Line antialiasing state */
- #define W3D_ANTI_POLYGON (1<<17) /* Polygon antialiasing state
- */
- #define W3D_ANTI_FULLSCREEN (1<<18) /* Fullscreen antialiasing
- state */
- #define W3D_DITHERING (1<<19) /* dithering state */
- #define W3D_LOGICOP (1<<20) /* logic operations */
- #define W3D_STENCILBUFFER (1<<21) /* stencil buffer/stencil
- test */
- #define W3D_ALPHATEST (1<<22) /* alpha test */
- #define W3D_SPECULAR (1<<23) /* Specular lighting */
- #define W3D_TEXMAPPING3D (1<<24) /* 3d textures */
- #define W3D_SCISSOR (1<<25) /* Scissor test enable */
- #define W3D_CHROMATEST (1<<26) /* Chroma test enable */
- #define W3D_CULLFACE (1<<27) /* Backface culling enable */
-
- /* action/result values for W3D_SetState/W3D_GetState */
-
- #define W3D_ENABLE 1 /* enable mode */
- #define W3D_ENABLED 1 /* mode is enabled */
- #define W3D_DISABLE 2 /* disable mode */
- #define W3D_DISABLED 2 /* mode is disabled */
-
- /* mode parameters for W3D_Query */
-
- #define W3D_Q_DRAW_POINT 1 /* point drawing */
- #define W3D_Q_DRAW_LINE 2 /* line drawing */
- #define W3D_Q_DRAW_TRIANGLE 3 /* triangle drawing */
- #define W3D_Q_DRAW_POINT_X 4 /* points with size != 1 supported */
- #define W3D_Q_DRAW_LINE_X 5 /* lines with width != 1 supported */
- #define W3D_Q_DRAW_LINE_ST 6 /* line stippling supported */
- #define W3D_Q_DRAW_POLY_ST 7 /* polygon stippling supported */
- #define W3D_Q_DRAW_POINT_FX 8 /* point drawing supports special fx */
- #define W3D_Q_DRAW_LINE_FX 9 /* line drawing supports speical fx */
- /* Note: more of these below */
-
- #define W3D_Q_TEXMAPPING 11 /* texmapping in general */
- #define W3D_Q_MIPMAPPING 12 /* mipmapping */
- #define W3D_Q_BILINEARFILTER 13 /* bilinear filter */
- #define W3D_Q_MMFILTER 14 /* mipmap filter */
- #define W3D_Q_LINEAR_REPEAT 15 /* W3D_REPEAT for linear texmapping */
- #define W3D_Q_LINEAR_CLAMP 16 /* W3D_CLAMP for linear texmapping */
- #define W3D_Q_PERSPECTIVE 17 /* perspective correction */
- #define W3D_Q_PERSP_REPEAT 18 /* W3D_REPEAT for persp. texmapping */
- #define W3D_Q_PERSP_CLAMP 19 /* W3D_CLAMP for persp. texmapping */
- #define W3D_Q_ENV_REPLACE 20 /* texenv REPLACE */
- #define W3D_Q_ENV_DECAL 21 /* texenv DECAL */
- #define W3D_Q_ENV_MODULATE 22 /* texenv MODULATE */
- #define W3D_Q_ENV_BLEND 23 /* texenv BLEND */
- #define W3D_Q_WRAP_ASYM 24 /* texture wrapping asymetric in s
- and t direction */
- #define W3D_Q_SPECULAR 25 /* Specular hiliting */
- #define W3D_Q_BLEND_DECAL_FOG 26 /* driver supports alpha blending and
- decal with fog */
- #define W3D_Q_TEXMAPPING3D 27 /* driver supports 3-dimensional
- (volumetric) textures */
- #define W3D_Q_CHROMATEST 28 /* driver supports chroma test */
-
- #define W3D_Q_FLATSHADING 31 /* flat shading */
- #define W3D_Q_GOURAUDSHADING 32 /* gouraud shading */
-
- #define W3D_Q_ZBUFFER 41 /* Z buffer in general */
- #define W3D_Q_ZBUFFERUPDATE 42 /* Z buffer update */
- #define W3D_Q_ZCOMPAREMODES 43 /* Z buffer compare modes */
-
- #define W3D_Q_ALPHATEST 51 /* alpha test in general */
- #define W3D_Q_ALPHATESTMODES 52 /* alpha test modes */
-
- #define W3D_Q_BLENDING 61 /* alpha blending */
- #define W3D_Q_SRCFACTORS 62 /* source factors */
- #define W3D_Q_DESTFACTORS 63 /* destination factors */
- #define W3D_Q_ONE_ONE 64 /* W3D_ONE / W3D_ONE supported */
-
- #define W3D_Q_FOGGING 71 /* fogging in general */
- #define W3D_Q_LINEAR 72 /* linear fogging */
- #define W3D_Q_EXPONENTIAL 73 /* exponential fogging */
- #define W3D_Q_S_EXPONENTIAL 74 /* square exponential fogging */
- #define W3D_Q_INTERPOLATED 75 /* interpolated fog */
-
- #define W3D_Q_ANTIALIASING 81 /* antialiasing in general */
- #define W3D_Q_ANTI_POINT 82 /* point antialiasing */
- #define W3D_Q_ANTI_LINE 83 /* line antialiasing */
- #define W3D_Q_ANTI_POLYGON 84 /* polygon antialiasing */
- #define W3D_Q_ANTI_FULLSCREEN 85 /* full screen antialiasing */
-
- #define W3D_Q_DITHERING 91 /* dithering */
- #define W3D_Q_PALETTECONV 92 /* driver can use per-texture
- palettes on 8bit screens */
-
- #define W3D_Q_SCISSOR 101 /* scissor test */
-
- #define W3D_Q_MAXTEXWIDTH 111 /* max. texture border width */
- #define W3D_Q_MAXTEXHEIGHT 112 /* max. texture border height */
- #define W3D_Q_MAXTEXWIDTH_P 113 /* max. texture border width */
- #define W3D_Q_MAXTEXHEIGHT_P 114 /* max. texture border height */
- #define W3D_Q_RECTTEXTURES 115 /* rectangular texture supported */
-
- #define W3D_Q_LOGICOP 121 /* logical operation */
-
- #define W3D_Q_MASKING 131 /* color/index masking */
-
- #define W3D_Q_STENCILBUFFER 141 /* stencil buffer in general */
- #define W3D_Q_STENCIL_MASK 142 /* mask value */
- #define W3D_Q_STENCIL_FUNC 143 /* stencil functions */
- #define W3D_Q_STENCIL_SFAIL 144 /* stencil operation SFAIL */
- #define W3D_Q_STENCIL_DPFAIL 145 /* stencil operation DPFAIL */
- #define W3D_Q_STENCIL_DPPASS 146 /* stencil operation DPPASS */
- #define W3D_Q_STENCIL_WRMASK 147 /* stencil buffer supports write
- masking */
-
- #define W3D_Q_DRAW_POINT_TEX 160 /* point drawing supports textures */
- #define W3D_Q_DRAW_LINE_TEX 161 /* line drawing supports textures */
-
- #define W3D_Q_CULLFACE 162 /* driver supports backface culling */
-
-
- /* results of W3D_Query (if a result-set is expected) */
-
- #define W3D_FULLY_SUPPORTED 3 /* completely supported */
- #define W3D_PARTIALLY_SUPPORTED 4 /* partially supported */
- #define W3D_NOT_SUPPORTED 5 /* not supported */
-
- /* blending modes used for alpha blending (the comment shows for
- which function [source or destination] the mode can be used) */
-
- #define W3D_ZERO 1 /* source + dest */
- #define W3D_ONE 2 /* source + dest */
- #define W3D_SRC_COLOR 3 /* dest only */
- #define W3D_DST_COLOR 4 /* source only */
- #define W3D_ONE_MINUS_SRC_COLOR 5 /* dest only */
- #define W3D_ONE_MINUS_DST_COLOR 6 /* source only */
- #define W3D_SRC_ALPHA 7 /* source + dest */
- #define W3D_ONE_MINUS_SRC_ALPHA 8 /* source + dest */
- #define W3D_DST_ALPHA 9 /* source + dest */
- #define W3D_ONE_MINUS_DST_ALPHA 10 /* source + dest */
- #define W3D_SRC_ALPHA_SATURATE 11 /* source only */
- #define W3D_CONSTANT_COLOR 12
- #define W3D_ONE_MINUS_CONSTANT_COLOR 13
- #define W3D_CONSTANT_ALPHA 14
- #define W3D_ONE_MINUS_CONSTANT_ALPHA 15
-
- /* texture filter. Only W3D_NEAREST and W3D_LINEAR can be used for
- magnification filters! */
-
- #define W3D_NEAREST 1 /* no mipmapping, no filtering */
- #define W3D_LINEAR 2 /* no mipmapping, bilinear filtering */
- #define W3D_NEAREST_MIP_NEAREST 3 /* mipmapping, no filtering */
- #define W3D_NEAREST_MIP_LINEAR 4 /* mipmapping, bilinear filtering */
- #define W3D_LINEAR_MIP_NEAREST 5 /* filtered mipmapping, no filtering */
- #define W3D_LINEAR_MIP_LINEAR 6 /* mipmapping, trilinear filtering */
-
- /* fog modes */
-
- #define W3D_FOG_LINEAR 1 /* linear fogging */
- #define W3D_FOG_EXP 2 /* exponential fogging */
- #define W3D_FOG_EXP_2 3 /* square exponential fogging */
- #define W3D_FOG_INTERPOLATED 4 /* interpolated fogging */
-
- /* texture environment parameters */
-
- #define W3D_REPLACE 1 /* unlit texturing */
- #define W3D_DECAL 2 /* RGB: same as W3D_REPLACE RGBA: use
- alpha to blend texture with
- primitive (lit-texturing) */
- #define W3D_MODULATE 3 /* lit-texturing by modulation */
- #define W3D_BLEND 4 /* blend with environment color */
-
- /* texture wrapping parameters */
-
- #define W3D_REPEAT 1 /* texture is repeated */
- #define W3D_CLAMP 2 /* texture is clamped */
-
- /* alpha test compare modes */
-
- #define W3D_A_NEVER 1 /* discard incoming pixel */
- #define W3D_A_LESS 2 /* draw, if value < refvalue */
- #define W3D_A_GEQUAL 3 /* draw, if value >= refvalue */
- #define W3D_A_LEQUAL 4 /* draw, if value <= refvalue */
- #define W3D_A_GREATER 5 /* draw, if value > refvalue */
- #define W3D_A_NOTEQUAL 6 /* draw, if value != refvalue */
- #define W3D_A_EQUAL 7 /* draw, if value == refvalue */
- #define W3D_A_ALWAYS 8 /* always draw */
-
- /* Z buffer compare modes */
-
- #define W3D_Z_NEVER 1 /* discard incoming pixel */
- #define W3D_Z_LESS 2 /* draw, if value < Z(Z_Buffer) */
- #define W3D_Z_GEQUAL 3 /* draw, if value >= Z(Z_Buffer) */
- #define W3D_Z_LEQUAL 4 /* draw, if value <= Z(Z_Buffer) */
- #define W3D_Z_GREATER 5 /* draw, if value > Z(Z_Buffer) */
- #define W3D_Z_NOTEQUAL 6 /* draw, if value != Z(Z_Buffer) */
- #define W3D_Z_EQUAL 7 /* draw, if value == Z(Z_Buffer) */
- #define W3D_Z_ALWAYS 8 /* always draw */
-
- /* logical operation modes */
-
- #define W3D_LO_CLEAR 1 /* dest = 0 */
- #define W3D_LO_AND 2 /* dest = source & dest */
- #define W3D_LO_AND_REVERSE 3 /* dest = source & !dest */
- #define W3D_LO_COPY 4 /* dest = source */
- #define W3D_LO_AND_INVERTED 5 /* dest = !source & dest */
- #define W3D_LO_NOOP 6 /* dest = dest */
- #define W3D_LO_XOR 7 /* dest = source ^ dest */
- #define W3D_LO_OR 8 /* dest = source | dest */
- #define W3D_LO_NOR 9 /* dest = !(source | dest) */
- #define W3D_LO_EQUIV 10 /* dest = !(source ^ dest) */
- #define W3D_LO_INVERT 11 /* dest = !dest */
- #define W3D_LO_OR_REVERSE 12 /* dest = source | !dest */
- #define W3D_LO_COPY_INVERTED 13 /* dest = !source */
- #define W3D_LO_OR_INVERTED 14 /* dest = !source | dest */
- #define W3D_LO_NAND 15 /* dest = !(source & dest) */
- #define W3D_LO_SET 16 /* dest = 1 */
-
- /* stencil test functions */
-
- #define W3D_ST_NEVER 1 /* don't draw pixel */
- #define W3D_ST_ALWAYS 2 /* draw always */
- #define W3D_ST_LESS 3 /* draw, if refvalue < ST */
- #define W3D_ST_LEQUAL 4 /* draw, if refvalue <= ST */
- #define W3D_ST_EQUAL 5 /* draw, if refvalue == ST */
- #define W3D_ST_GEQUAL 6 /* draw, if refvalue >= ST */
- #define W3D_ST_GREATER 7 /* draw, if refvalue > ST */
- #define W3D_ST_NOTEQUAL 8 /* draw, if refvalue != ST */
-
- /* stencil test operations */
-
- #define W3D_ST_KEEP 1 /* keep stencil buffer value */
- #define W3D_ST_ZERO 2 /* clear stencil buffer value */
- #define W3D_ST_REPLACE 3 /* replace by reference value */
- #define W3D_ST_INCR 4 /* increment */
- #define W3D_ST_DECR 5 /* decrement */
- #define W3D_ST_INVERT 6 /* invert bitwise */
-
- /* chroma test modes */
-
- #define W3D_CHROMATEST_NONE 1 /* No chroma test */
- #define W3D_CHROMATEST_INCLUSIVE 2 /* texels in the range pass the test */
- #define W3D_CHROMATEST_EXCLUSIVE 3 /* texels in the range are rejected */
-
- /* error/status values */
-
- #define W3D_SUCCESS 0 /* success */
- #define W3D_BUSY -1 /* graphics hardware is busy */
- #define W3D_ILLEGALINPUT -2 /* failure, illegal input */
- #define W3D_NOMEMORY -3 /* no memory available */
- #define W3D_NODRIVER -4 /* no hardware driver available */
- #define W3D_NOTEXTURE -5 /* texture is missing */
- #define W3D_TEXNOTRESIDENT -6 /* texture not resident */
- #define W3D_NOMIPMAPS -7 /* mipmaps are not supported by this
- texture object */
- #define W3D_NOGFXMEM -8 /* no graphics memory available */
- #define W3D_NOTVISIBLE -9 /* drawing area not visible/ bitmap
- swapped out */
- #define W3D_UNSUPPORTEDFILTER -10 /* unsupported filter */
- #define W3D_UNSUPPORTEDTEXENV -11 /* unsupported filter */
- #define W3D_UNSUPPORTEDWRAPMODE -12 /* unsupported wrap mode */
- #define W3D_UNSUPPORTEDZCMP -13 /* unsupported Z compare mode */
- #define W3D_UNSUPPORTEDATEST -14 /* unsupported alpha test */
- #define W3D_UNSUPPORTEDBLEND -15 /* unsupported blending function */
- #define W3D_UNSUPPORTEDFOG -16 /* unsupported fog mode */
- #define W3D_UNSUPPORTEDSTATE -17 /* can't enable/disable state */
- #define W3D_UNSUPPORTEDFMT -18 /* unsupported bitmap format */
- #define W3D_UNSUPPORTEDTEXSIZE -19 /* unsupported texture border size */
- #define W3D_UNSUPPORTEDLOGICOP -20 /* unsupported logical operation */
- #define W3D_UNSUPPORTEDSTTEST -21 /* unsupported stencil test */
- #define W3D_ILLEGALBITMAP -22 /* illegal bitmap */
- #define W3D_NOZBUFFER -23 /* Z buffer is missing/unavailable */
- #define W3D_NOPALETTE -24 /* Palette missing for chunky
- textures */
- #define W3D_MASKNOTSUPPORTED -25 /* color/index masking not supported */
- #define W3D_NOSTENCILBUFFER -26 /* Stencil buffer is
- missing/unavailable */
- #define W3D_QUEUEFAILED -27 /* The request can not be queued */
- #define W3D_UNSUPPORTEDTEXFMT -28 /* Texformat unsupported */
- #define W3D_WARNING -29 /* Parital success */
- #define W3D_UNSUPPORTED -30 /* Requested feature is unsupported */
-
- /* Hints */
-
- #define W3D_H_TEXMAPPING 1 /* Quality of general texture mapping
- */
- #define W3D_H_MIPMAPPING 2 /* Quality of mipmapping */
- #define W3D_H_BILINEARFILTER 3 /* Quality of bilinear filtering */
- #define W3D_H_MMFILTER 4 /* Quality of depth filter */
- #define W3D_H_PERSPECTIVE 5 /* Quality of perspective correction */
- #define W3D_H_BLENDING 6 /* Quality of alpha blending */
- #define W3D_H_FOGGING 7 /* Quality of fogging */
- #define W3D_H_ANTIALIASING 8 /* Quality of antialiasing */
- #define W3D_H_DITHERING 9 /* Quality of dithering */
- #define W3D_H_ZBUFFER 10 /* Quality of zbuffering */
- #define W3D_H_POINTDRAW 11
-
- /* Quality parameters */
-
- #define W3D_H_FAST 1 /* Low quality, fast rendering */
- #define W3D_H_AVERAGE 2 /* Medium quality and speed */
- #define W3D_H_NICE 3 /* Best quality, low speed */
-
- /* ScreenMode Requester TagItems */
-
- #define W3D_SMR_TAGS (TAG_USER+0x202000)
- #define W3D_SMR_DRIVER (W3D_SMR_TAGS+0) /* Driver to filter */
- #define W3D_SMR_DESTFMT (W3D_SMR_TAGS+1) /* Dest Format to filter */
- #define W3D_SMR_TYPE (W3D_SMR_TAGS+2) /* Type to filter */
- #define W3D_SMR_SIZEFILTER (W3D_SMR_TAGS+3) /* Also filter size */
- #define W3D_SMR_MODEMASK (W3D_SMR_TAGS+4) /* AND-Mask for modes */
-
- /* BestModeID tag items */
-
- #define W3D_BMI_TAGS (TAG_USER+0x203000)
- #define W3D_BMI_DRIVER (W3D_BMI_TAGS+0)
- #define W3D_BMI_WIDTH (W3D_BMI_TAGS+1)
- #define W3D_BMI_HEIGHT (W3D_BMI_TAGS+2)
- #define W3D_BMI_DEPTH (W3D_BMI_TAGS+3)
-
- /* Vertex Buffer defines */
- #define W3D_VERTEX_F_F_F 0
- #define W3D_VERTEX_F_F_D 1
- #define W3D_VERTEX_D_D_D 2
-
- /* Color Buffer defines */
- #define W3D_COLOR_FLOAT (0x01<<30)
- #define W3D_COLOR_UBYTE (0x02<<30)
-
- #define W3D_CMODE_RGB 0x01
- #define W3D_CMODE_BGR 0x02
- #define W3D_CMODE_RGBA 0x04
- #define W3D_CMODE_ARGB 0x08
- #define W3D_CMODE_BGRA 0x10
-
- /* Primitive types for W3D_DrawArray/W3D_DrawElements */
- #define W3D_PRIMITIVE_TRIANGLES 0
- #define W3D_PRIMITIVE_TRIFAN 1
- #define W3D_PRIMITIVE_TRISTRIP 2
- #define W3D_PRIMITIVE_POINTS 3
- #define W3D_PRIMITIVE_LINES 4
- #define W3D_PRIMITIVE_LINELOOP 5
- #define W3D_PRIMITIVE_LINESTRIP 6
-
- /* Index array layout */
- #define W3D_INDEX_UBYTE 0
- #define W3D_INDEX_UWORD 1
- #define W3D_INDEX_ULONG 2
-
- /* TexCoordArray flags */
- #define W3D_TEXCOORD_NORMALIZED (1L<<0) /* Texture coordinates are normalized */
-
-
- #endif
-